package cn.springboot.linked;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

/**
 * @author liufl E-mail:Huberier@allpyra.com
 * @version 创建时间：2017年9月27日 下午4:20:30
 * 链接地址队列
 * 爬到一个超链接后，将其加入到队列中，接着爬这个超链接，并将这个超链接放入标示已查的队列中
 */
public class LinkCollection {
	//待访问url的集合：队列
    private List<String> unVisitedUrls=Collections.synchronizedList(new ArrayList<String>());
    private Set<String> visitedUrls=Collections.synchronizedSet(new HashSet<String>());

    /**
     * 入队操作
     */
    public void addUnVisitedUrl(String url){
        if(url!=null&&!"".equals(url.trim())&&!visitedUrls.contains(url)&&!unVisitedUrls.contains(url)){
            unVisitedUrls.add(url);
        }
    }
    /**
     * 出队
     */
    public String deQueueUnVisitedUrl(){
        if(unVisitedUrls.size()>0){
            String url=unVisitedUrls.remove(0);
            visitedUrls.add(url);
            return url;
        }
        return null;
    }
    /**
     * 判断队列是否为空
     */
    public boolean isUnVisitedUrisEmpty(){
        if(unVisitedUrls!=null&&!"".equals(unVisitedUrls)){
            return false;
        }else{
            return true;
        }
    }
    /**
     * hadoop出队
     */
    public String deQueueVisitedUrl(){
        if(visitedUrls.iterator().hasNext()){
            String url=visitedUrls.iterator().next();
            visitedUrls.remove(0);
            return url;
        }
        return null;
    }
    /**
     * 判断Visited队列是否为空
     */
    public boolean isVisitedUrisEmpty(){
        if(visitedUrls!=null&&!"".equals(visitedUrls)){
            return false;
        }else{
            return true;
        }
    }
}

